//文件编码

//BOM移除
//BOM用于标记一个文本文件使用Unicode编码，其本身是一个Unicode字符（"\uFEFF"），
//位于文本文件头部。在不同的Unicode编码下，BOM字符对应的二进制字节如下：

//     Bytes      Encoding
// ----------------------------
//     FE FF       UTF16BE
//     FF FE       UTF16LE
//     EF BB BF    UTF8
// 如果读取文本文件时不去掉BOM，在某些使用场景下就会有问题。
// 例如我们把几个JS文件合并成一个文件后，如果文件中间含有BOM字符，
// 就会导致浏览器JS语法错误。因此，使用NodeJS读取文本文件时，一般需要去掉BOM。
var fs=require('fs');
var iconv=require('iconv-lite');
//读取utf-8文件
function readText(pathname){
	var bin=fs.readFileSync(pathname);
	if(bin[0]===0xEF &&bin[1]===0xBB&&bin[2]===0xBF){
		bin=bin.slice(3);
	}
	return bin.toString('utf-8');
}
//GBK转Utf-8
function readGBKText(pathname){
	var bin=fs.readFileSync(pathname);
	return iconv.decode(bin,'gbk');
}

function replace(pathname,pathname2) {
    var str = fs.readFileSync(pathname, 'binary');
    str = str.replace('foo', 'bar');
    fs.writeFileSync(pathname2, str, 'binary');
}
//替换了一次？？？
replace('./text.txt','./textnew.txt');